﻿#ifndef QMEMORYINFOPROVIDER_H
#define QMEMORYINFOPROVIDER_H

#include <QObject>
#include <QString>
#include <QList>

class QMemoryInfoProvider : public QObject
{
    Q_OBJECT

public:
    explicit QMemoryInfoProvider(QObject *parent = nullptr);

    struct MemoryDetails {
        /**
         * @brief manufacturer - 内存模块的制造商。例如："Kingston" 或 "Corsair"。
         */
        QString manufacturer;

        /**
         * @brief partNumber - 内存模块的部件号。这是制造商指定的一个标识符，用于识别具体的内存模块型号。
         */
        QString partNumber;

        /**
         * @brief serialNumber - 内存模块的序列号。这是一个唯一的标识符，用于区分同一型号的不同内存条。
         */
        QString serialNumber;

        /**
         * @brief memoryType - 内存模块的技术类型。例如："DDR4", "DDR3" 等，表示使用的内存技术标准。
         */
        QString memoryType;

        /**
         * @brief speed - 内存模块的工作速度。表示内存可以运行的最大速率，单位通常是MHz。
         */
        QString speed;

        /**
         * @brief capacity - 内存模块的容量。表示该内存条的存储容量，单位通常是GB或MB。
         */
        QString capacity;
    };

    QList<MemoryDetails> getAllMemoryDetails() const;

private:
    QList<MemoryDetails> getMemoryDetailsWindows() const;
    QList<MemoryDetails> getMemoryDetailsLinux() const;
    QString memoryTypeToDescription(int memoryType) const;
};

#endif // QMEMORYINFOPROVIDER_H
